Nginx服务器配置

2023/09/11 10:45:34

Nginx服务器配置

背景

  • 需求:将本地项目build后同时放到云服务器上,或解决跨域问题;

代码

server{
  listen 7444;  # 监听的接口
  server name 139.159.202.250;  # localhost或者本地的IP

  location / {
    root C:/ins/lot;
    try files $uri $uri/ /index.html
  }

  # 跨域配置
  location /app {
    # 在这里配置跨域规则
    add header 'Access-Control-Allow-Origin';
    add header'Access-Control-A11ow-Methods""GET,POST,OPTIONS;

    proxy_pass https://geoapp.gzpi.com.cn/ddy_yp; # 代理到前端应用
    proxy set header Host $host;
  }
}

问题解决

  1. 端口长度问题:nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
server_names_hash_bucket_size 64; # 根据需要适当调整大小
  1. 出现/assets无法定位的问题
location /assets {
  alias /path/to/your/assets/directory;
}
  1. 扩展:alias和root区别
    1. root
    • root 指令用于设置一个根目录,它定义了一个基本的文件系统路径,用于构建请求的最终文件路径。
    • 当使用 root 时,Nginx 会将请求的 URI 直接附加到根目录,构成请求的文件路径。例如,如果根目录是 /var/www,并且请求的 URI 是 /images/pic.jpg,则最终的文件路径将是 /var/www/images/pic.jpg
    • root 通常用于处理静态文件,例如 HTML、CSS、JavaScript 文件等。它适用于在请求中保留 URI 结构的情况。
location /static/ {
  root /var/www;
}
  1. alias
  • alias 指令用于指定一个别名,它可以更灵活地映射请求的 URI 到文件系统的不同位置。
  • 当使用 alias 时,Nginx 会将请求的 URI 替换为指定的别名路径,然后寻找文件。这意味着你可以将请求的 URI 与文件系统的实际路径完全分开。
  • alias 通常用于处理特定类型的请求,例如代理服务器中的 URL 重写或者处理文件存储在不同位置的情况。
location /images/ {
  alias /var/www/images/;
}